home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.1 KB | 118 lines |
- 10 PRINT:PRINT:PRINT:PRINT "LIN INTER MOD PROGRAM V1.4 4/17/84"
- 12 PRINT:PRINT,"k2uyh --- modified for ibm pc --- wa2tif":PRINT
- 15 PI=3.1416
- 20 DR=PI/180: REM PRECISION 3
- 30 REM DEF FNTM(P)
- 40 REM WP=(P-LP)/SP:rem WI=INT(WP): REM IF WP<=0 THEN FNRETURN WP+TM(0)
- 50 REM IF WP>=NP THEN FNRETURN TM(NP)+(TM(NP)-TM(NP-1))*(WP-NP)
- 60 REM FNEND TM(WI)+(WP-WI)*(TM(WI+1)-TM(WI))
- 70 DEF FNTA(P)
- 80 REM WP=(P-LP)/SP: rem WI=INT(WP): REM IF WP<=0 THEN FNRETURN TA(0)
- 90 REM IF WP>=NP THEN FNRETURN TA(NP)+(TA(NP)-TA(NP-1))*(WP-NP)
- 100 REM FNEND TA(WI)+(WP-WI)*(TA(WI+1)-TA(WI))
- 110 REM PRINT: REM INPUT "WANT TO READ A FILE (Y/N/END)";Q$: DV=0
- 120 REM KILL P,TM,TA
- 130 IF Q$="END" THEN END
- 140 IF Q$<>"Y" THEN 220
- 150 PRINT: INPUT "FILE NAME, DIR OR QUIT"; F$: N$=F$
- 160 IF F$="DIR"THEN DIR"*.LIN":GOTO 150 ELSE IF F$="QUIT"THEN 110
- 170 F$=F$+".LIN": OPEN#1, "I", F$
- 180 READ#1,NP,LP,SP
- 190 DIM P(NP),TM(NP),TA(NP)
- 200 FOR I=0 TO NP: READ#1,P(I),TM(I),TA(I): NEXT
- 210 CLOSE#1: GOTO 351
- 220 PRINT: INPUT "MINIMUM INPUT LEVEL IN dB REF SAT"; LP
- 230 INPUT "MAXIMUM INPUT LEVEL IN dB REF SAT"; HP
- 240 INPUT "POWER STEP IN dB"; SP: NP=(HP-LP)/SP
- 250 IF NP<>INT(NP) THEN PRINT: PRINT "INPUT ERROR": GOTO 220
- 260 DIM P(NP),TM(NP),TA(NP)
- 270 PRINT: FOR I=0 TO NP STEP SP: P(I)=LP+I
- 280 PRINT "P in = "; P(I);: INPUT " POWER OUT MAG & ANG"; TM(I), TA(I): NEXT
- 290 REM PRINT: REM INPUT "WANT TO SAVE FILE (Y/N)"; Q$
- 300 IF Q$<>"Y" THEN 351
- 310 PRINT: INPUT "FILE NAME"; F$: N$=F$: F$=F$+".LIN"
- 320 ERASE F$: OPEN#1,"O",F$
- 330 WRITE#1,NP,LP,SP
- 340 FOR I=0 TO NP: WRITE#1,P(I),TM(I),TA(I): NEXT: CLOSE#1
- 350 REM *************** MAIN PROGRAM *************************
- 351 PRINT: INPUT "WANT TO CALC POINT OR SWEEP (P/S)"; Q$
- 352 IF Q$<>"S" THEN IP=0: PRINT: GOTO 370 ELSE IP=3: H$="N"
- 353 REM INPUT "WANT HARD COPY (Y/N)"; H$: rem PRINT: rem IF H$<>"Y" THEN 370
- 354 PRINT: PRINT, " I3/C CHARACTERISTICS FOR "; F$: PRINT: PRINT: GOTO 370
- 360 PRINT: INPUT "TWO CARRIER LEVEL IN dB REF SAT"; IP
- 362 IF IP>10 THEN 351
- 370 M=10:N=2:W=2*PI/M:KE=0:JE=0:UE=0:VE=0:KM=0:JM=0:UM=0:VM=0
- 380 VL=10^(IP/10):CE=0:SE=0:CM=0:SM=0:AE=0:BE=0:AM=0:BM=0
- 390 FOR I=0 TO M-1: TW=W*I: TN=TW*N
- 395 CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
- 400 VA=(VL*((1+CW)^2+(SW)^2))/2
- 410 IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
- 420 AN=ATN(SW/(1+CW+0))
- 425 GOSUB 740
- 427 GOSUB 800
- 430 MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
- 440 XM=MF*COS(AF): YM=MF*SIN(AF)
- 450 CE=CE+XM*CN: SE=SE+XM*SN
- 460 AE=AE+YM*CN: BE=BE+YM*SN
- 465 KE=KE+XM*CW: JE=JE+XM*SW
- 466 UE=UE+YM*CW: VE=VE+YM*SW: TW=W*(I+1): TN=TW*N
- 467 CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
- 470 VA=(VL*((1+CW)^2+(SW)^2))/2
- 480 IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG10(VA)
- 490 AN=ATN(SW/(1+CW))
- 495 GOSUB 740
- 497 GOSUB 800
- 500 MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
- 510 XM=MF*COS(AF): YM=MF*SIN(AF)
- 520 CM=CM+XM*CN: SM=SM+XM*SN
- 530 AM=AM+YM*CN: BM=BM+YM*SN
- 535 KM=KM+XM*CW: JM=JM+XM*SW
- 536 UM=UM+YM*CW: VM=VM+YM*SW: NEXT
- 537 CN=1: CW=1: SN=0: SW=0
- 540 VA=(VL*((1+CW)^2+(SW)^2))/2
- 550 IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
- 560 AN=ATN(SW/(1+CW))
- 565 GOSUB 740
- 567 GOSUB 800
- 570 MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
- 580 XM=MF*COS(AF): YM=MF*SIN(AF)
- 590 C0=XM*CN: S0=XM*SN
- 600 A0=YM*CN: B0=YM*SN
- 605 K0=XM*CW: J0=XM*SW
- 606 U0=YM*CW: V0=YM*SW: TW=M*W: TN=N*TW
- 607 CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
- 610 VA=(VL*((1+CW)^2+(SW)^2))/2
- 620 IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
- 630 AN=ATN(SW/(1+CW))
- 635 GOSUB 740
- 637 GOSUB 800
- 640 MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
- 650 XM=MF*COS(AF): YM=MF*SIN(AF)
- 660 C1=XM*CN: S1=XM*SN
- 670 A1=YM*CN: B1=YM*SN
- 675 K1=XM*CW: J1=XM*SW
- 676 U1=YM*CW: V1=YM*SW
- 680 RC=(2*CE+4*CM-C0+C1+2*BE+4*BM-B0+B1)/(3*M)
- 690 QC=(-2*SE-4*SM+S0-S1+2*AE+4*AM-A0+A1)/(3*M)
- 700 AA=(RC^2+QC^2)/2: IF AA<0 THEN I3=-90 ELSE I3=10*LOG(AA)/LOG(10)
- 705 RK=(2*KE+4*KM-K0+K1+2*VE+4*VM-V0+V1)/(3*M)
- 706 QK=(-2*JE-4*JM+J0-J1+2*UE+4*UM-U0+U1)/(3*M)
- 707 A0=(RK^2+QK^2)/2: IF A0<0 THEN I0=-90 ELSE I0=10*LOG(A0)/LOG(10)
- 710 PRINT "INPUT= "IP;TAB(15);"OUTPUT= "I0;TAB(30);"C/I3= "I3-I0" dB"
- 712 IF H$<>"Y" THEN 720
- 715 PRINT, "INPUT= "IP;TAB(15);"OUTPUT= "I0;TAB(30);"C/I3= "I3-I0" dB"
- 720 IF Q$<>"S" THEN 360 ELSE IP=IP-1
- 730 IF IP=-21 THEN END ELSE GOTO 370
- 740 WP=(P-LP)/SP: WI=INT(WP)
- 745 IF WP<=0 GOTO 750 ELSE GOTO 760
- 750 DEF FNTM(P)= WP+ TM(0):RETURN
- 760 IF WP>=NP GOTO 770 ELSE GOTO 780
- 770 DEF FNTM(P)= TM(NP)+ (TM(NP)-TM(NP-1))*(WP-NP):RETURN
- 780 DEF FNTM(P)= TM(WI)+ (WP-WI)*(TM(WI-1)-TM(WI)):RETURN
- 800 WP=(P-LP)/SP:WI=INT(WP)
- 805 IF WP<=0 GOTO 810 ELSE GOTO 820
- 810 DEF FNTA(P)= TA(0):RETURN
- 820 IF WP>=NP GOTO 830 ELSE GOTO 840
- 830 DEF FNTA(P)= TA(NP) +(TA(NP-1))*(WP-NP):RETURN
- 840 DEF FNTA(P)= TA(WI)+(WP-WI)*(TA(WI+1)-TA(WI)):RETURN
-